package mbean;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import util.FacesUtil;
import vo.UsuarioVO;
import dao.UsuarioDAO;

public class LoginMBean {
	
	private String login, senha, nomeUsuario;
	private int id;
	
	private final String SUCESSO = "success";
	private final String FALHA = "failure";
	
	public String validaLogin(){
		String tmp = this.FALHA;
		boolean erro = false;
		
		if (this.login.equalsIgnoreCase("")){
			FacesUtil.addErrorMessage(FacesUtil.getMessageResourceString("errorLoginRequired"));
			erro = true;			
		}
		
		if (this.senha.equalsIgnoreCase("")){
			FacesUtil.addErrorMessage(FacesUtil.getMessageResourceString("errorPaswdRequired"));
			erro = true;
		}
		
		if (! erro){
			UsuarioDAO usuarioDAO = new UsuarioDAO();
			
			int retorno = usuarioDAO.verificaLogin(login, senha);
			if (retorno == 0){
				UsuarioVO vo = usuarioDAO.getUser(login);				
				FacesUtil.setSessionMapValue("usuario", vo);
				this.nomeUsuario = vo.getNome();
				this.id = vo.getId();
				
				tmp = this.SUCESSO;
				
				NavigationMBean nmb = new NavigationMBean();
				nmb.setTelaAtual("index.xhtml");
				nmb.setValidaSalvar(false);
				FacesUtil.setSessionMapValue("navigation", nmb);				
			}
			else if (retorno == 1){
				FacesUtil.addErrorMessage(FacesUtil.getMessageResourceString("errorExistLogin"));				
			}
			else{
				FacesUtil.addErrorMessage(FacesUtil.getMessageResourceString("errorIncorrectPswd"));
			}
		}
		
		return tmp;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getSenha() {
		return senha;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getLogin() {
		return login;
	}

	public void setNomeUsuario(String nomeUsuario) {
		this.nomeUsuario = nomeUsuario;
	}

	public String getNomeUsuario() {
		return nomeUsuario;
	}
	
	public boolean getIsLogged(){
		return (FacesUtil.getSessionMapValue("usuario") != null);
	}
	
	public String logout(){
		FacesContext conext = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) conext.getExternalContext().getSession(false);
		session.invalidate(); 
		return "login";
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}
	
	public boolean isAdmin(){
		if (this.login.equalsIgnoreCase("luiztomaz")){
			return true;
		}
		else{
			return false;
		}
	}
}
